/*
 * /2020/匹配包含‘2020’的字符串
 * const str = '22020年'
 * const regxp = new RegExp(/2020/)
 * console.log(regxp.test(str))
 */

/*
 *[Jj]匹配大写J或者小写j的字符串
 * const strList = ['java8.0', 'Java8.0']
 * const regexp = new RegExp(/[Jj]ava/)
 * const mapList = strList.filter((item) => regexp.test(item))
 * console.log(mapList)
 */
// 匹配方法
function regexpMatch(regx, arr) {
  return arr.filter((item) => regx.test(item))
}

/*
 *^取反 表示不匹配包含该字符的字符串
 * const strList = ['爱吗', '爱哦', '爱我自己', '爱了', '我爱我', '我爱你', '爱你', '不爱你', '爱你一万年']
 * const regex = new RegExp(/爱[^你]/)
 * console.log(regexpMatch(regex, strList))
 */
/*
 *\w表示[a-z][A-Z][0-9]
 * const strList = ['a', '_', '//\\', '=-']
 * const regex = new RegExp(/\w/)
 * console.log(regexpMatch(regex, strList))
 */
/*
 *^不出现在方括号就不表示取反？似乎是这样  表示打头
 * const strList = ['￥master', '$codejiaonang', '()helloworld', '+python', '-java', '*ruby', 'master', 'code', 'python', 'java', 'ruby', 'regex']
 * const regex = new RegExp(/^\w/)
 * console.log(regexpMatch(regex, strList))
 */

/*
 *?表示可出现零次或一次
 * const strList = ['color', 'colour', 'colorr']
 * const regex = new RegExp(/colou?r/)
 * console.log(regexpMatch(regex, strList))
 */
/*
 *匹配王姓同学 四位学号的同学
 * const strList = ['王敏 0001', '王磊 1234', '王静 0102', '王丽 0502', '王绣丽 0503', '王芳芳 0503', '王芳 04', '李秀英 0586', '李娜 0504', '大王 0505', '刘伟 1729', '张敏 1377']
 * const regex = new RegExp(/^王.{1,2}\s\d{4}/)
 * console.log(regexpMatch(regex, strList))
 */

/*
 *提取div里的值  分组
 * const str = '<div>hi</div>'
 * const reg = /<div>(.*?)<\/div>/
 * console.log(reg.exec(str))
 */
/*
 *多个捕获性分组
 * const reg = /(\d{4})-?\s?(\d{4})-?\s?(\d{2})/
 * const str = '2019-5013-08'
 * reg.exec(str).forEach(
 *   (item) => {
 *     console.log(item)
 *   },
 * )
 */
/*
 *非捕获性分组  (?:) 使用分组但是不捕获 食之无味 弃之可惜？
 * const strList = ['01-75855', '0731-75855', '12345-75855', 'tel:75855']
 * const reg = /(?:\w{2,5})-?:?(\d{5})/
 * strList.forEach((item) => {
 *   console.log(reg.exec(item))
 * })
 */
/*
 *正向先行断言 至少一个大写字母 至少一个小写字母 至少一个数字 至少8个字符
 * const strList = ['Admin123456', 'pZUJLUpTL2', 'Tnut2eWPN1', 'wJxpVhVYi3', 'UySRo49ps', 'Ig7AHzZ0J', 'wjleif932', 'admin123', '123admin', '123asd123', 'ADMIN123()', '编号89757']
 * const reg = /(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)\w{8,}/
 * console.log(regexpMatch(reg, strList))
 */
/*
 * (163|123|sina|google)[Jj]ava []匹配单个字符 ()匹配字符串
 * const reg = /\w+@(163|123|sina|google)/
 * const strList = ['abc@sina.com', 'qq@163.com', 'a@google.com', 'qq@123.com', 'test@qq.com', 'qq@qq.com', 'gc@qq.com', '163@qq.com']
 * console.log(regexpMatch(reg, strList))
 */
// const str = 'aabaavvvvabbbbbffffbb'
// const arr = str.match(/(.)\1*/g)
// console.log(arr)

const s = 'cbaabcd'
const arrList = s.match(/(\w*)(\w)(\w)?(\2)(\1)/g)
console.log(arrList)